Computer networks, such as the Internet, private intranets, extranets, and virtual private networks, are increasingly being used for a variety of endeavors including the storage and retrieval of information, communication, electronic commerce, entertainment, and other applications. In these networks certain computers, known as servers or home servers, are used to provide some type of service such as access to information (e.g., data or programs) stored in various computer file formats but generically referred to herein as a xe2x80x9cdocumentxe2x80x9d. While in the Internet the documents are typically primarily composed of text and graphics, each such document can actually be a highly formatted computer file containing data structures that are a repository for a variety of information including text, tables, graphic images, sounds, motion pictures, animations, computer program code, and/or many other types of digitized information.
Other computers in the network, known as clients, receive the services provided by the servers. Often a client obtains a service by sending a service request to the home server. For example, a client may obtain access to a document by requesting that a copy be sent by the home server over the network to the client.
In general, when a client requests a service from a home server, the client provides service information to the home server. By way of example, when the service is access to a document, each document typically has an address by which it can be referenced. In the context of the Internet and within the communication protocol known as Hyper Text Transfer Protocol (HTTP), the address is typically an alphanumeric string, known as a Uniform Resource Locator (URL), that specifies (a) an address of the home server from which to obtain the information in the form of a name or a numerical address, and (b) a local information text string that identifies the information requested by the client, which may be a file name, a search request, or other identification.
After the user specifies a URL to the client computer, the address portion of the URL is sent over the network to a naming service such as the Domain Name Service (DNS) in order to obtain instructions for how to establish a connection with the correct home server. Once the connection with the server is established, the client can then retrieve the desired document by passing the local information text string over the network directly to the home server. The server then retrieves the document from its local disk or memory storage and transmits the document over the network to the client. The network connection between the home server and the client is then terminated.
Computer and network industry analysts and experts are presently quite concerned that traffic on the Internet is becoming so heavy that the very nature of the way in which it is possible to use the Internet may change. In particular, many individuals now believe that the Internet is intolerably slow and is no longer a reliable entity for the exchange of information in a timely fashion.
The present bottlenecks are no doubt the result of exponential increases in the number of users as well as in the number of complex documents such as multimedia files being sent. It might appear that the answer is simply to add more bandwidth to the physical connections between servers and clients. This will come, however, only at the expense of installing high bandwidth interconnection hardware, such as coaxial or fiber optic cable and associated modems and the like, into homes and neighborhoods around the world.
Furthermore, added bandwidth by itself perhaps would not guarantee that performance would improve. In particular, large multimedia files such as for video entertainment would still potentially displace higher priority types of data, such as corporate E-mails. Unfortunately, bandwidth allocation schemes are difficult to implement, short of modifying existing network communication protocols. The communication technology used on the Internet, called TCP/IP, is a simple, elegant protocol that allows people running many different types of computers such as Apple Macintoshes, IBM-compatible PCs, and UNIX workstations to share data. While there are ambitious proposals to extend the TCP/IP protocol so that the address can include information about packet content, these proposals are technologically complex and would require coordination between operators of many thousands of computer networks. To expect that modifications will be made to existing TCP/IP protocols is thus perhaps unrealistic.
An approach taken by some has been to recognize that the rapidly growing use of the Internet will continue to outstrip server capacity as well as the bandwidth capacity of the communication media. These schemes begin with the premise that the basic client-server model (where clients connect directly to home servers) is wasteful of resources, especially for information which needs to be distributed widely from a single home server to many clients. There are indeed, many examples of where Internet servers have simply failed because of their inability to cope with the unexpected demand placed upon them.
To alleviate the demand on home servers, large central document caches may be used. Caches are an attempt to reduce the waste of repeated requests for the same document from many clients to a particular home server. By intercepting parallel requests, a cache can be used to serve copies of the same document to multiple client locations.
To illustrate some of the difficulties presented by conventional caching techniques, consider the following example. Suppose a news service organization has a home server that is based domestically within the United States. The volume of document requests received at the home server (both from within the United States and from other countries) may increase to a point in which the news organization decides to lessen the load at the domestic site by creating an overseas site to service overseas clients. Accordingly, the news service organization adds an overseas site that xe2x80x9cmirrorsxe2x80x9d the domestic site, i.e., that stores a copy of the documents at the domestic site for overseas access. When an overseas client without knowledge of the mirroring overseas site sends a document request to the domestic site, the domestic site responds by sending a message to the overseas site instructing the overseas site to provide the requested document. The overseas site responds to this message by providing its mirror copy of the document to the overseas client.
In this mirroring approach, the domestic site is no longer burdened with the task of providing the document to the overseas client. However, the initial document request message must still reach the domestic site, and the domestic site must subsequently provide a message to the overseas site instructing the overseas site to provide the document to the client. Accordingly, in this approach, messages travel in a triangular manner from the overseas client to the domestic site, from the domestic site to the overseas site, and from the overseas site back to the overseas client. As such, response times may be slow due to the amount of network (number of hops and distances) the messages must pass through. In particular, delays such as those caused by bottlenecks at the cross-oceanic network connections may result in excessively long response times reducing the benefit of the mirroring overseas site to the overseas clients.
Some home servers provide services that are not primarily document access services. For example, some servers receive information from a client, provide processing services, and then send a processing result back to the client. An alternative to this traditional client/server approach is for the server to send code to the client, and for the client to execute the code. This approach offloads the processing work onto the client. Additionally, once the code reaches the client, the client may be able to execute the code repetitively without the need for sending additional messages back and forth between the client and server in order to reduce network traffic. An example of this approach is the use of Java applets.
Another approach involves offloading servicing work from a home server to an intermediate node interconnected between the home server and the client. Here, the home server sends a document and code to the intermediate node. At the intermediate node, the code executes and modifies the document. The modified document is then sent to the client in a more customized form. Accordingly, the work of customizing the document is performed by the intermediate node rather than the home server. An example of this approach is the use of Active Networks. One Active Network architecture is discussed in an article entitled xe2x80x9cTowards an Active Network Architecturexe2x80x9d, by Tennenhouse et al., in a paper presented at a keynote session of Multimedia Computing and Networking, San Jose, Calif., January 1996, the teachings of which are incorporated by reference herein in their entirety. Another similar approach which is geared towards multimedia is explained in U.S. Pat. No. 5,592,626 (Papadimitriou et al.).
Embodiments of the present invention are directed to techniques for fulfilling service requests within a system of computers that communicate as nodes within a network. The techniques involve using a mobile agent to instruct an intermediate node such that it operates as a front end server. In particular, a primary server node distributes the mobile agent to dedicated intermediate nodes within the network. When a dedicated intermediate node located between a client node to the primary server node receives and uses the mobile agent, the dedicated node becomes capable of intercepting service requests from the client node to the primary server node. In one implementation, the dedicated node operates as a secondary server node to directly service requests sent from client nodes to the primary server node. In another implementation, the dedicated node redirects the work of servicing the requests to a secondary server node. For a document request, the secondary server node (a cache server) returns a cached document to the requesting client node. The service requests are thus responded to before they ever reach the primary server node.
By distributing the work of servicing requests to one or more secondary server nodes within the network, the work of servicing requests that are intercepted on their way to the primary server node is offloaded from the primary server node. The secondary server nodes are preferably closer to the client nodes (by number of hops and distance) such that response time is faster, and less network traffic is created.
Preferably, the offloading techniques are automatic and transparent. In particular, the secondary server nodes preferably are able to service requests without departing from standard network protocols. In one approach, the secondary server nodes act as communication protocol proxies for the home server (e.g., the secondary server nodes are a proxy servers). Accordingly, as part of fulfilling service requests at the intermediate locations, the client nodes are sent appropriate messages, depending upon the communication protocol in use, to xe2x80x9cspoofxe2x80x9d the client nodes into believing that the services were actually provided by the primary server node.
In one embodiment, the redirection technique involves redirecting a service request from an intermediate node to a secondary server node to fulfill the service request. In particular, the technique involves sending, in response to an initial service request that requests a service provided by a primary server node, a mobile agent from the primary server node to an intermediate node. The mobile agent indicates to the intermediate node that a secondary server node is capable of providing the service. Additionally, the technique involves intercepting, at the intermediate node, a subsequent service request sent from a client node to the primary server node, the subsequent service request requesting the service, and sending an instruction from the intermediate node to the secondary server node. The instruction instructs the secondary server node to provide the service. The technique further involves providing, in response to the instruction, the service from the secondary server node to the client node.
With the above-described redirection technique, the servicing of the subsequent service request is redirected from the primary server node to the secondary server node. Preferably, the service request is intercepted before it reaches the primary server node, and handled by the secondary server node without intervention from the primary server node. This enables a reduction in network traffic to the primary server node, and allows the work of servicing the subsequent service request to be unloaded from the primary server node onto the secondary server node.
Preferably, the mobile agent includes a set of rules for responding to service requests and a list of server nodes that are capable of providing the service. Accordingly, when a subsequent service request is intercepted at the intermediate node, the intermediate node can select one of the server nodes on the list as the secondary server node to service the request. Selection of the secondary server node by the intermediate node is based on the set of rules of the mobile agent.
Even though the service is provided by a secondary server node rather than the primary server node, the service response preferably includes a source identifier indicating the primary server node as the source of the service response. Accordingly, the client node can be spoofed into believing that the primary server node serviced the request, and the unloading of work from the primary server node to the secondary server node is transparent.
In another embodiment, the dedicated nodes receiving the mobile agent does not redirect requests. Rather, the dedicated node uses the mobile agent to service requests directly. The technique involves receiving, at a secondary server node, a mobile agent from a primary server node. The technique further involves executing, in response to service requests from client nodes, code of the mobile agent at the secondary server node to provide service responses to the client nodes.
The secondary server node provides a first service response having a first content for a first client node and a second service response having a second content for a second client node, where the first and second contents are different from each other. Traditionally, only the primary server node was capable of providing such responses since execution of the code to generate the responses would occur only at the primary server node. Using this technique, code for servicing requests is transferred to a secondary server node for execution. Accordingly, the work of servicing service requests can be offloaded from the primary server node, and brought closer to the client nodes.
Although conventional techniques may allow a client node to execute code that traditionally executed on a server node (e.g., Java applets), such techniques generally do not address the issue tying activity of multiple clients together, such as in the context of a computerized game played by multiple clients. A secondary server node has this capability since it can receive messages from each client node and provide a cohesive environment to each client node. In particular, when the mobile agent is a computerized game, executing the code of the mobile agent on a secondary server node preferably involves providing, to a first client node, a first image as the first content of the first service response, and providing, to a second client node, a second image as the second content of the second service response. The first and second images may be different views of a computer simulated environment.
Alternatively, the mobile agent may handle the selection of advertisements for client viewing. In this situation, executing the code of the mobile agent may involve providing, to the first client node, a first advertisement as the first content of the first service response based on client node data, and providing, to the second client node, a second advertisement as the second content of the second service response based on the client node data. The first and second advertisements may be different from each other, and selected to have maximum impact at the client nodes. To this end, the client node data may include statical information regarding past service requests and client node preferences that develop over time, as seen by the secondary server node. Accordingly, content providers can customize responses to the clients nodes such that the selected responses to each client node include advertisements of particular interest to the clients nodes.